package 一些笔试真题;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: a
 * Date: 2022-10-05
 * Time: 16:36
 */

/*
    硬币的划分
    状态转移方程:
    如果第i个硬币的面值大于j : F(i, j) = F(i - 1, j)
    如果第i个硬币的面值小于j, 则可以利用也可以不利用, 两种方法: F(i, j) = F(i - 1, j) + F(i, j - coins[i - 1])

    初始化:
    F(0, j) = 0   因为没有硬币可以使用
    F(i, 0) = 1   组成面值为0的有且只有1种方法, 就是不放
 */
public class guazi_2 {
    private static int mod = 1_0000_0000_7;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] coins = {1, 2, 5, 10};
        int[][] methodNum = new int[5][n + 1];
        for(int i = 0; i <= 4; i++){
            methodNum[i][0] = 1;
        }
        for(int i = 1; i <= 4; i++){
            for(int j = 1; j <= n; j++){
                if(coins[i - 1] > j){
                    methodNum[i][j] = methodNum[i - 1][j];
                }else{
                    methodNum[i][j] = (methodNum[i - 1][j] + methodNum[i][j - coins[i - 1]]) % mod;
                }
            }
        }
        System.out.println(methodNum[4][n]);
    }
}
